iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Mobile Development

少年K的Swift奇幻漂流記系列 第 19

Day 19 Swift MessageBorad App 實作 Part5 : 右滑內的編輯邏輯

  • 分享至 

  • xImage
  •  

編輯訊息的處理邏輯

當使用者點擊 "編輯" 時,會彈出一個包含文字輸入框的警告視窗,讓使用者修改訊息內容。修改完成後,會透過 Realm 資料庫進行更新,並重新載入表格顯示最新的內容。

// editMessage 是用來處理編輯訊息的動作
func editMessage(_ message: MessageBoard, at indexPath: IndexPath) {
    // 彈出一個警告視窗,讓使用者可以編輯訊息內容
    let alertController = UIAlertController(title: "編輯", message: nil, preferredStyle: .alert)

    // 在警告視窗中加入一個文字輸入框,並將訊息的當前內容顯示在輸入框中
    alertController.addTextField { textField in
        textField.text = message.content
    }

    // 定義一個保存動作
    let saveAction = UIAlertAction(title: "保存", style: .default) { [weak self] _ in
        // 確認新的內容不為空,並從輸入框中取得新的內容
        guard let newContent = alertController.textFields?.first?.text, !newContent.isEmpty else { return }

        // 初始化 Realm 資料庫
        let realm = try! Realm()

        // 在 Realm 中寫入變更,更新訊息的內容和當前時間
        try! realm.write {
            message.content = newContent
            message.currentTime = self?.getSystemTime() ?? ""
        }

        // 更新表格中的當前列,讓新的內容顯示出來
        self?.tbvTest.reloadRows(at: [indexPath], with: .automatic)

        // 將訊息重新排序並重新載入表格
        self?.sortMessages()
        self?.tbvTest.reloadData()
    }

    // 定義一個取消動作,取消操作不做任何變更
    let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)

    // 將保存和取消的動作加入到警告視窗中
    alertController.addAction(saveAction)
    alertController.addAction(cancelAction)

    // 顯示警告視窗
    present(alertController, animated: true, completion: nil)
}

編輯過程中,我們透過 UITextField 讓使用者修改訊息,並將新的訊息內容寫入 Realm。編輯完成後,透過 reloadRows(at:with:) 來更新表格的顯示,並對訊息進行排序。

結論

介紹了如何透過左右滑動來實現 UITableView 中的刪除與編輯功能,並與 Realm 資料庫進行整合。


上一篇
Day18 Swift MessageBoard App 實作 Part 4:TableView 右滑
下一篇
Day20 Swift Clock App 實作 Part1:NavigationBar創建左右按鈕
系列文
少年K的Swift奇幻漂流記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言